#CACHE{0}
<?php
    /**
     *  This file contain XML parser (wich you may change according to your purposes)
     *  It must be reloaded, for example, every 30 seconds  
     */
    // Если понадобится узнать следующую песню, то нужно будет проверять также тип песни 'preloaded', и заганять эту песню в массив (например как элемент с индексом -1)
    //TODO: Возможно сюда еще надо добавить проверку даты последней записи файла, и если не возможно обновить информацию, то очищать файл.  
    $song_type = 'playing';
    $song_type = strtolower($song_type);    
    $filename = lire_config('radiodj/XMLfile');
    $num_last_songs = 5; // Количество последних песен
    include_spip('inc/xml_parser');
    
    if ($filename && file_exists($filename) && is_readable($filename)) {
        $xml = file_get_contents($filename);               
        $xml_parser = new XML($xml);        
            
        if ($xml_parser) {
            foreach ($xml_parser->ELEM_LIST->ELEM as $element){                    
                if ($element['STATUS'] === $song_type) {
                    //TODO: Тут надо как то по хитрому проверять существуют ли   (например $element->NAME) - обычные способы не прокатили
	                $song_name = (string)$element->NAME; // Название песни (MALINOVOE VINO)                     
                    $song_artist = (string)$element->ARTIST; // Исполнитель (IGOR' NIKOLAEV)
                    $song_start_time = (string)$element->START_TIME;  // время начала (00:44:00)
                    $song_start_date = (string)$element->START_DATE;  // дата начала (2011-05-13)
                    $song_duration = (string)$element->DURATION;  // дата начала (2011-05-13)
                    //Также можно вытащить и другую инфу, но она не несла никакого смысла
                    break;   
                }
            }    
        }
        
        // Put new song to songs array
        if ($song_type == 'playing') {
            $last_songs = unserialize(file_get_contents(_DIR_PLUGIN_RADIODJ.'last_songs.txt'));
            //var_dump($last_songs);
            if (!is_array($last_songs)) 
                $last_songs = array();
            // If current song differs from last and has no '_' symbols
            // $last_songs[0] - Suppose to be current song!!!
            if (strpos($song_name, '_')===false && (empty($last_songs) || $last_songs[0]['ARTIST'] != $song_artist || $last_songs[0]['NAME'] != $song_name)) {
                $new_song = array('ARTIST' => $song_artist, 
                                  'NAME' => $song_name,
                                  'START_TIME' => $song_start_time,
                                  'START_DATE' => $song_start_date,
                                  'DURATION' => $song_duration,
                                  );
                array_unshift($last_songs, $new_song); // Push new song at the begining
                if (count($last_songs) > $num_last_songs+1) // If there is more than 5 songs, delete last one
                    array_pop($last_songs);                
                file_put_contents(_DIR_PLUGIN_RADIODJ.'last_songs.txt', serialize($last_songs));                            
            }
        }
           
    }
?>